using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication2 {

	//Desenvolvido e implementado por Andre Fernandes Rocha Sales
	
	class Regra0 : Regras
	{
	
		public string[,] priMatriz;
		
		public string[,] getMatriz(string[] lines)
		{
			priMatriz = new string[lines.Length, 95];
			//priMatriz = new string [1,1];
			string troca;
			int coLines = 0;
			StringBuilder auxTroca = new StringBuilder();
			
			for (int linha = 0; linha < lines.Length; linha++)
			{
				for(int coluna= 0; coluna < 95; coluna++)
				{
					switch(coluna)
					{
						//Tipo Registro
						case 0:
								troca = lines[linha][coluna].ToString();
								priMatriz[linha,coluna] = troca;
								break;
						//Controle Sequencial de Gravacao
						case 1:
								for(coLines = 1; coLines <=12; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Data Geracao do Arquivo
						case 2:
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 13; coLines <=20; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Identificacao da Empresa Operadora que esta Apresentando os Dados.
						case 3:
							
								auxTroca.Remove(0,auxTroca.Length);
								
								for(coLines = 21; coLines <=35; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//UF da Empresa Operadora
						case 4:
						
								auxTroca.Remove(0,auxTroca.Length);
								
								for(coLines = 36; coLines <=37; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Codigo do Cliente
						case 5:
						
								auxTroca.Remove(0,auxTroca.Length);
								
								for(coLines = 38; coLines <= 52; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Nome do Cliente
						case 6:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 53; coLines <= 92; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//CGC do Cliente
						case 7:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 93; coLines <= 107; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Identificador Conta Unica
						case 8:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 108; coLines <= 132; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Data de Vencimento
						case 9:
								
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 133; coLines <= 140; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Data de Emissao
						case 10:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 141; coLines <= 148; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
						//Filler
						case 92:
						
								auxTroca.Remove(0, auxTroca.Length);
								
								for(coLines = 149; coLines <= 349; coLines++)
								{
									troca = lines[linha][coLines].ToString();
									auxTroca.Append(troca);
								}
								
								troca = auxTroca.ToString();
								priMatriz[linha, coluna] = troca;
								break;
								
					}
				}
			}
								
			return priMatriz;
		}
		
	}
	
}